
import java.awt.Checkbox;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.*;

/**
 * <p>
 * Detalha a acao a ser executada quando acionado o BotaoDeRequisicao
 * associado via a representacao grafica (Checkbox) de tal Botao.
 * </p>
 */
class ComandoBotaoDeRequisicao implements ItemListener {

  ///////////////////////////////////////
  // attributes


/**
 * <p>
 * Representa o agrupamento de elementos graficos que contem a
 * representacao do BotaoDeRequisicao acionado na interface de usuario.
 * </p>
 */
    private ArranjoBotaoExternoAndar arranjoBotoes; 

/**
 * <p>
 * Representa o Botao envolvido.
 * </p>
 */
    private Checkbox botao; 

/**
 * <p>
 * Representa a direcao de movimento associada ao Botao.
 * </p>
 */
    private boolean subir; 


  ///////////////////////////////////////
  // operations


/**
 * <p>
 * Gera uma instancia de ComandoBotaoDeRequisicao.
 * </p>
 * 
 * @return uma instancia de ComandoBotaoDeRequisicao.
 * 
 * @param arranjoBotoes - agrupamento de elementos graficos que contem a
 * representacao do BotaoDeRequisicao acionado.
 * 
 * @param botao - representacao grafica do proprio Botao.
 * 
 * @param subir - indica o movimento associado ao BotaoDeRequisicao.
 */
    public  ComandoBotaoDeRequisicao(ArranjoBotaoExternoAndar arranjoBotoes, Checkbox botao, boolean subir) {        
        this.arranjoBotoes = arranjoBotoes;
        this.botao = botao;
        this.subir = subir;
    } // end ComandoBotaoDeRequisicao        

/**
 * <p>
 * Executa a acao apos o acionamento do BotaoDeRequisicao.
 * </p>
 * 
 * @param e - evento que representa o acionamento do BotaoDeRequisicao.
 */
    public void itemStateChanged(ItemEvent e) {        
        if (e.getStateChange() == ItemEvent.SELECTED)
            arranjoBotoes.registrarAcionamento(subir);
        else botao.setState(true);
    } // end itemStateChanged        

 } // end ComandoBotaoDeRequisicao



